package attend.action.BDADM;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import attend.UserContainer.User;
import attend.com.Session;
import attend.dao.BDADM.BDADM_AuthDAO;
import dao.Paging.PagingDAO;



/**
 * 파일명 : BDADM_AuthAction.java
 * 관리자>권한관리
 * 최초 작성일 : 2008/11/11
 * @author seo myeong seong
 *
 */
public class BDADM_AuthAction extends Session {

	private static final long serialVersionUID 			= 1L;
	
	private List<HashMap<String, String>> list 			= null; 
	private List<HashMap<String, String>> listAuth 		= null; 
	private List<HashMap<String, String>> listAdmin 	= null;
	private List<HashMap<String, String>> main_list		= null; 
	
	private int 	result 			= 0;
	private int 	size 			= 0;
	private int 	menu 			= 0;
	private int 	searchResult 	= 0; // 조회된데이터가 있는지 검사
	
	private String 	auth;
	private String 	select;
	private String 	reg_id;
	private String 	access_yn;
	private String 	menu_url;
	private String 	check;
	
	private String 	menu_code;
	private String 	menu_code_multi;
	
	private String change_data;
	private String params;			// 화면 제어시 parameter

	BDADM_AuthDAO 	dao 			= null;
	
	/// 페이징 처리 ///
	private int rowCount 			= 0;
	private int cur_page 			= 1;
	private int cur_page2 			= 1;
	
	PagingDAO 		pDao 			= null;
	
	User user;
	
	private String id;
	
	int start_row 	=	0;
	int end_row 	= 	0;
	
	@Override
	public String execute() throws Exception {
		
		dao 			= new BDADM_AuthDAO();
		listAdmin 		= new ArrayList<HashMap<String,String>>();
		listAuth 		= new ArrayList<HashMap<String,String>>();

		/// 직책 select 정보 가져오기 ///
		dao.searchAuth();
		listAdmin = dao.getList();

		//관리자 선택이 안되어있다면 리턴만함.
		if (select == null) {
			return SUCCESS;
		}
		
		dao.searchInput_tot(select);
		
		/* 조회건수 */
		rowCount = dao.getRowCount();
		
		//조회건수가 0이 아닌경우 페이징 처리
//		if(rowCount > 0)
//		{
//			pDao 		= new PagingDAO(2 , 3 , rowCount , cur_page);
//			
//			start_row 	= pDao.getWriting_Start();	//시작 행 구하기
//		    end_row   	= pDao.getWriting_End();	//마지막 행 구하기
//			
//			/// 조회 ///
//		    dao.searchFcd(select , start_row , end_row);
//			list = dao.getList();
//
//		}
		
		/// 최초 로딩시  ///
		//dao.searchFcd(select,start_row,end_row);
		//listAuth = dao.getList();
		//auth = dao.getAuth();

		/// 리로드시 선택한 관리자명 가져오기 ///	
		//dao.searchNm(select);
		//select = dao.getCode_nm();

		//searchResult = dao.getSearchResult();
		searchResult = rowCount;	//허용 , 불가 버튼이 보여질지 여부를 가린다. 0일경우 안보인다.
		return SUCCESS;
	}
	
	/**
	 * 페이지 라디오버튼 클릭시 하단데이터 조회
	 * @return
	 * @throws Exception
	 */
	public String BDADM_searchMenu() throws Exception {
		
		dao 		= new BDADM_AuthDAO();
		list 		= new ArrayList<HashMap<String,String>>();
		listAdmin 	= new ArrayList<HashMap<String,String>>();
		listAuth 	= new ArrayList<HashMap<String,String>>();
		main_list   = new ArrayList<HashMap<String,String>>();

		/// 최초 로딩시  ///
		//dao.searchFcd(select , start_row , end_row);
		
		//listAuth 	= dao.getList();
		//auth 		= dao.getAuth();
		//reg_id 		= dao.getReg_id();
		
		/// 관리자 정보 가져오기 ///
		//dao.searchAuth();
		//listAdmin = dao.getList();

		/// 하단 리스트 가져오기 ///
		String menu_code = "%";
		dao.searchMenu( select, menu_code);
		list = dao.getList();
		
		dao.search_main_group();			// 대메뉴 목록
		main_list = dao.getMain_list();		// list에 담기
		
		/// 리로드시 선택한 관리자명 가져오기 ///	
		//dao.searchNm(select);
		//select = dao.getCode_nm();
		
		searchResult = dao.getSearchResult(); 


		return SUCCESS;
	}
	
	/**
	 * 업데이트
	 * @return
	 * @throws Exception
	 */
	String[] code_multi_data 	= 	null;
	


	/**
	 * @return
	 * @throws Exception
	 */
	public String BDADM_update() throws Exception {
		
		if (change_data == null) {
			return SUCCESS;
		}
		
		dao 					= new BDADM_AuthDAO();
		
		
		code_multi_data =  change_data.split(",");
		
		if (code_multi_data.length / 2 == 1) {	//1개인 경우
			dao.updateByOne(code_multi_data[0], select, code_multi_data[1], user.getUser_id()); //여기변수명은 code 이지만 DAo에서는 url의 filed에 저장
			
			result = dao.getResult();
			
			System.out.println("하나 업뎃되었습니다.");
			return SUCCESS;
		}
		
		for (int i = 0; i < code_multi_data.length; i++) {
			if (i % 2 == 0) {	
				menu_code = code_multi_data[i];
			} else {//홀수번재
				access_yn = code_multi_data[i];
			}
			dao.updateByMulti(menu_code , select , access_yn);//여기변수명은 code 이지만 DAo에서는 url의 filed에 저장
			
			result = dao.getResult();
			
			System.out.println("여러개 업뎃되었습니다.");
		}
		String menu_code = "%";
		/// 하단 리스트 가져오기 ///
		dao.searchMenu( select, menu_code);
		list 			= dao.getList();
		
		result 			= dao.getResult();
		searchResult 	= dao.getSearchResult(); 				

		
		/// 최초 로딩시  ///
		//dao.searchFcd(select,start_row,end_row);
		//listAuth 		= dao.getList();
		//auth 			= dao.getAuth();
		
		/// 관리자 정보 가져오기 ///
		//dao.searchAuth();
		//listAdmin = dao.getList();
		
		/// 리로드시 선택한 관리자명 가져오기 ///	
		//dao.searchNm(code_fcd);
		//select = dao.getCode_nm();		
		
		return SUCCESS;
	}
	
	/**
	 * 
	* <PRE>
	* 1. MethodName : BDADM_Call_Popup
	* 2. ClassName  : BDADM_AuthAction
	* 3. Comment   : 메뉴 관리 팝업 호출 
	* 4. 작성자    : 최병옥
	* 5. 작성일    : 2011. 10. 20. 오후 3:12:24
	* </PRE>
	*   @return void
	 */
	public String BDADM_Call_Popup() throws Exception{		
		
		dao	= new BDADM_AuthDAO();
		
		String [] temp = params.split("/");
		
		String menu_code = temp[0];
		String auth 	 = temp[1];
		
		dao.searchMenu(auth, menu_code);
		
		list = dao.getList();
				
		
		return SUCCESS;
		
	}
	
/////////////// getter,setter ////////////////////////////////////////
	public List<HashMap<String, String>> getList() {
		return list;
	}

	public void setList(List<HashMap<String, String>> list) {
		this.list = list;
	}

	public int getResult() {
		return result;
	}

	public void setResult(int result) {
		this.result = result;
	}

	public List<HashMap<String, String>> getListAuth() {
		return listAuth;
	}

	public void setListAuth(List<HashMap<String, String>> listAuth) {
		this.listAuth = listAuth;
	}

	public int getMenu() {
		return menu;
	}

	public void setMenu(int menu) {
		this.menu = menu;
	}

	public String getAuth() {
		return auth;
	}

	public void setAuth(String auth) {
		this.auth = auth;
	}

	public int getSearchResult() {
		return searchResult;
	}

	public void setSearchResult(int searchResult) {
		this.searchResult = searchResult;
	}

	public List<HashMap<String, String>> getListAdmin() {
		return listAdmin;
	}

	public void setListAdmin(List<HashMap<String, String>> listAdmin) {
		this.listAdmin = listAdmin;
	}

	public String getSelect() {
		return select;
	}

	public void setSelect(String select) {
		this.select = select;
	}

	public int getSize() {
		return size;
	}

	public void setSize(int size) {
		this.size = size;
	}

	public String getReg_id() {
		return reg_id;
	}

	public void setReg_id(String reg_id) {
		this.reg_id = reg_id;
	}

	public String getAccess_yn() {
		return access_yn;
	}

	public void setAccess_yn(String access_yn) {
		this.access_yn = access_yn;
	}

	public int getRowCount() {
		return rowCount;
	}

	public void setRowCount(int rowCount) {
		this.rowCount = rowCount;
	}

	public int getCur_page() {
		return cur_page;
	}

	public void setCur_page(int cur_page) {
		this.cur_page = cur_page;
	}

	public int getCur_page2() {
		return cur_page2;
	}

	public void setCur_page2(int cur_page2) {
		this.cur_page2 = cur_page2;
	}

	public PagingDAO getPDao() {
		return pDao;
	}

	public void setPDao(PagingDAO dao) {
		pDao = dao;
	}

	public User getUser() {
		return user;
	}

	public void setUser(User user) {
		this.user = user;
	}

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getMenu_code() {
		return menu_code;
	}

	public void setMenu_code(String menu_code) {
		this.menu_code = menu_code;
	}

	public String getMenu_code_multi() {
		return menu_code_multi;
	}

	public void setMenu_code_multi(String menu_code_multi) {
		this.menu_code_multi = menu_code_multi;
	}
	
	
	/**
	 * @return the change_data
	 */
	public String getChange_data() {
		return change_data;
	}

	/**
	 * @param change_data the change_data to set
	 */
	public void setChange_data(String change_data) {
		this.change_data = change_data;
	}

	/**
	 * @return the menu_url
	 */
	public String getMenu_url() {
		return menu_url;
	}

	/**
	 * @param menu_url the menu_url to set
	 */
	public void setMenu_url(String menu_url) {
		this.menu_url = menu_url;
	}

	/**
	 * @return the check
	 */
	public String getCheck() {
		return check;
	}

	/**
	 * @param check the check to set
	 */
	public void setCheck(String check) {
		this.check = check;
	}

	/**
	 * @return the code_multi_data
	 */
	public String[] getCode_multi_data() {
		return code_multi_data;
	}

	/**
	 * @param code_multi_data the code_multi_data to set
	 */
	public void setCode_multi_data(String[] code_multi_data) {
		this.code_multi_data = code_multi_data;
	}

	public String getParams() {
		return params;
	}

	public void setParams(String params) {
		this.params = params;
	}

	public List<HashMap<String, String>> getMain_list() {
		return main_list;
	}

	public void setMain_list(List<HashMap<String, String>> main_list) {
		this.main_list = main_list;
	}
	
	
	
}
